/*
1.promise就是一个类 在执行这个类的时候 需要传递一个执行器进行 执行器会立即执行
2.promise 中有三种状态 分别为 成功 fulfilled 失败 rejected 等待 pending
 pending ->fulfilled
 pending ->rejected
 一旦状态确定就不可更改
 3. resolve和reject函数是用来更改状态的
 reslove :fulfilled
 reject:rejected
 4.then方法内部做的事情是判断状态，如果状态成功，调用成功的回调函数，如果状态失败，调用失败回调函数。
 5.then成功回调有一个参数 表示成功之后的值 then失败之后有失败的原因
 6.同一个promise对象下面的then方法是可以被调用多次的
 7.then方法是可以被链式调用的，后面then方法的回调函数那导致
*/
const MyPromise = require('./myPromise')
let promise = new MyPromise((reslove, reject) => {
    // reslove('成功')
    reject('失败')
})

let p1 = promise.then(value => {
    console.log(value)
    return p1;
});

p1.then(value => {
    console.log(value)
}, reason => {
    console.log(reason.message)
    return 10000;
}).then(value => {
    console.log(value);
})

function p2 () {
    return new MyPromise(function (resolve, reject) {
      reject('失败')
      // resolve('成功');  
    })
  }
  
  p2()
    .then(value => console.log(value))
    .catch(reason => console.log(reason))
  